package delphorm.web.aspect;

import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;

import org.springframework.aop.MethodBeforeAdvice;

import delphorm.entite.personne.GroupeCollectif;
import delphorm.entite.personne.Utilisateur;
import delphorm.service.personne.IGroupeCollectif;
import delphorm.service.personne.IPersonne;


public class VerifParamsAjouterUtilisateurGroupeCollectif implements MethodBeforeAdvice
{
	IPersonne servicePersonne;
	IGroupeCollectif serviceGroupeCollectif;
	
	public void before(Method method, Object[] arguments, Object target) 
	throws Throwable {
		
		HttpServletRequest request = (HttpServletRequest)arguments[0];
		
		//verif de l'idutilisateur
		String idUStr = request.getParameter("idutilisateur");
		long idU;
		if(idUStr != null)
		{
			try {
				idU = Long.parseLong(idUStr);
			} catch (NumberFormatException e) {
				throw new delphorm.web.exception.ParametreException("parametre.mauvaisformat","idutilisateur");
			}		
			
			//vérifie que l'utilisateur existe
			Utilisateur u = servicePersonne.chercherUtilisateurParId(new Long(idU));
			if(u==null)
				throw new delphorm.web.exception.ParametreException("parametre.invalide","idutilisateur");
		}
		
		//verif de l'idgroupe
		String idGStr = request.getParameter("idgroupecollectif");
		long idG;
		if(idGStr != null)
		{
			try {
				idG = Long.parseLong(idGStr);
			} catch (NumberFormatException e) {
				throw new delphorm.web.exception.ParametreException("parametre.mauvaisformat","idgroupecollectif");
			}		
			
			//vérifie que le groupe existe
			GroupeCollectif groupeCollectif = serviceGroupeCollectif.chercherGroupeParId(new Long(idG));
			if(groupeCollectif==null)
				throw new delphorm.web.exception.ParametreException("parametre.invalide","idgroupecollectif");
		}
		
		

	}

	public IPersonne getServicePersonne() {
		return servicePersonne;
	}

	public void setServicePersonne(IPersonne servicePersonne) {
		this.servicePersonne = servicePersonne;
	}	
	
	public IGroupeCollectif getServiceGroupeCollectif() {
		return serviceGroupeCollectif;
	}
	public void setServiceGroupeCollectif(IGroupeCollectif serviceGroupeCollectif) {
		this.serviceGroupeCollectif = serviceGroupeCollectif;
	}
}
